home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2000 March / maximum-cd-2000-03.iso / Quake3 Game Source / Q3AGameSource.exe / Main / botlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-18  |  19.2 KB  |  452 lines

  1. // Copyright (C) 1999-2000 Id Software, Inc.
  2. //
  3. /*****************************************************************************
  4.  * name:        botlib.h
  5.  *
  6.  * desc:        bot AI library
  7.  *
  8.  * $Archive: /source/code/game/botai.h $
  9.  * $Author: Mrelusive $ 
  10.  * $Revision: 2 $
  11.  * $Modtime: 03/01/00 3:32p $
  12.  * $Date: 03/01/00 3:42p $
  13.  *
  14.  *****************************************************************************/
  15.  
  16. #define    BOTLIB_API_VERSION        2
  17.  
  18. struct aas_clientmove_s;
  19. struct aas_entityinfo_s;
  20. struct bot_consolemessage_s;
  21. struct bot_match_s;
  22. struct bot_goal_s;
  23. struct bot_moveresult_s;
  24. struct bot_initmove_s;
  25. struct weaponinfo_s;
  26.  
  27. //debug line colors
  28. #define LINECOLOR_NONE            -1
  29. #define LINECOLOR_RED            1//0xf2f2f0f0L
  30. #define LINECOLOR_GREEN            2//0xd0d1d2d3L
  31. #define LINECOLOR_BLUE            3//0xf3f3f1f1L
  32. #define LINECOLOR_YELLOW        4//0xdcdddedfL
  33. #define LINECOLOR_ORANGE        5//0xe0e1e2e3L
  34.  
  35. //Print types
  36. #define PRT_MESSAGE                1
  37. #define PRT_WARNING                2
  38. #define PRT_ERROR                3
  39. #define PRT_FATAL                4
  40. #define PRT_EXIT                5
  41.  
  42. //console message types
  43. #define CMS_NORMAL                0
  44. #define CMS_CHAT                1
  45.  
  46. //botlib error codes
  47. #define BLERR_NOERROR                    0    //no error
  48. #define BLERR_LIBRARYNOTSETUP            1    //library not setup
  49. #define BLERR_INVALIDENTITYNUMBER        2    //invalid entity number
  50. #define BLERR_NOAASFILE                    3    //no AAS file available
  51. #define BLERR_CANNOTOPENAASFILE            4    //cannot open AAS file
  52. #define BLERR_WRONGAASFILEID            5    //incorrect AAS file id
  53. #define BLERR_WRONGAASFILEVERSION        6    //incorrect AAS file version
  54. #define BLERR_CANNOTREADAASLUMP            7    //cannot read AAS file lump
  55. #define BLERR_CANNOTLOADICHAT            8    //cannot load initial chats
  56. #define BLERR_CANNOTLOADITEMWEIGHTS        9    //cannot load item weights
  57. #define BLERR_CANNOTLOADITEMCONFIG        10    //cannot load item config
  58. #define BLERR_CANNOTLOADWEAPONWEIGHTS    11    //cannot load weapon weights
  59. #define BLERR_CANNOTLOADWEAPONCONFIG    12    //cannot load weapon config
  60.  
  61. //action flags
  62. #define ACTION_ATTACK            1
  63. #define ACTION_USE                2
  64. #define ACTION_RESPAWN            4
  65. #define ACTION_JUMP                8
  66. #define ACTION_MOVEUP            8
  67. #define ACTION_CROUCH            16
  68. #define ACTION_MOVEDOWN            16
  69. #define ACTION_MOVEFORWARD        32
  70. #define ACTION_MOVEBACK            64
  71. #define ACTION_MOVELEFT            128
  72. #define ACTION_MOVERIGHT        256
  73. #define ACTION_DELAYEDJUMP        512
  74. #define ACTION_TALK                1024
  75. #define ACTION_GESTURE            2048
  76. #define ACTION_WALK                4096
  77.  
  78. //the bot input, will be converted to an usercmd_t
  79. typedef struct bot_input_s
  80. {
  81.     float thinktime;        //time since last output (in seconds)
  82.     vec3_t dir;                //movement direction
  83.     float speed;            //speed in the range [0, 400]
  84.     vec3_t viewangles;        //the view angles
  85.     int actionflags;        //one of the ACTION_? flags
  86.     int weapon;                //weapon to use
  87. } bot_input_t;
  88.  
  89. #ifndef BSPTRACE
  90.  
  91. #define BSPTRACE
  92.  
  93. //bsp_trace_t hit surface
  94. typedef struct bsp_surface_s
  95. {
  96.     char name[16];
  97.     int flags;
  98.     int value;
  99. } bsp_surface_t;
  100.  
  101. //remove the bsp_trace_s structure definition l8r on
  102. //a trace is returned when a box is swept through the world
  103. typedef struct bsp_trace_s
  104. {
  105.     qboolean        allsolid;    // if true, plane is not valid
  106.     qboolean        startsolid;    // if true, the initial point was in a solid area
  107.     float            fraction;    // time completed, 1.0 = didn't hit anything
  108.     vec3_t            endpos;        // final position
  109.     cplane_t        plane;        // surface normal at impact
  110.     float            exp_dist;    // expanded plane distance
  111.     int                sidenum;    // number of the brush side hit
  112.     bsp_surface_t    surface;    // the hit point surface
  113.     int                contents;    // contents on other side of surface hit
  114.     int                ent;        // number of entity hit
  115. } bsp_trace_t;
  116.  
  117. #endif    // BSPTRACE
  118.  
  119. //entity state
  120. typedef struct bot_entitystate_s
  121. {
  122.     int        type;            // entity type
  123.     int        flags;            // entity flags
  124.     vec3_t    origin;            // origin of the entity
  125.     vec3_t    angles;            // angles of the model
  126.     vec3_t    old_origin;        // for lerping
  127.     vec3_t    mins;            // bounding box minimums
  128.     vec3_t    maxs;            // bounding box maximums
  129.     int        groundent;        // ground entity
  130.     int        solid;            // solid type
  131.     int        modelindex;        // model used
  132.     int        modelindex2;    // weapons, CTF flags, etc
  133.     int        frame;            // model frame number
  134.     int        event;            // impulse events -- muzzle flashes, footsteps, etc
  135.     int        eventParm;        // even parameter
  136.     int        powerups;        // bit flags
  137.     int        weapon;            // determines weapon and flash model, etc
  138.     int        legsAnim;        // mask off ANIM_TOGGLEBIT
  139.     int        torsoAnim;        // mask off ANIM_TOGGLEBIT
  140. } bot_entitystate_t;
  141.  
  142. //bot AI library exported functions
  143. typedef struct botlib_import_s
  144. {
  145.     //print messages from the bot library
  146.     void        (QDECL *Print)(int type, char *fmt, ...);
  147.     //trace a bbox through the world
  148.     void        (*Trace)(bsp_trace_t *trace, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int passent, int contentmask);
  149.     //trace a bbox against a specific entity
  150.     void        (*EntityTrace)(bsp_trace_t *trace, vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int entnum, int contentmask);
  151.     //retrieve the contents at the given point
  152.     int            (*PointContents)(vec3_t point);
  153.     //check if the point is in potential visible sight
  154.     int            (*inPVS)(vec3_t p1, vec3_t p2);
  155.     //retrieve the BSP entity data lump
  156.     char        *(*BSPEntityData)(void);
  157.     //
  158.     void        (*BSPModelMinsMaxsOrigin)(int modelnum, vec3_t angles, vec3_t mins, vec3_t maxs, vec3_t origin);
  159.     //send a bot client command
  160.     void        (*BotClientCommand)(int client, char *command);
  161.     //memory allocation
  162.     void        *(*GetMemory)(int size);
  163.     void        (*FreeMemory)(void *ptr);
  164.     void        *(*HunkAlloc)(int size);
  165.     //file system access
  166.     int            (*FS_FOpenFile)( const char *qpath, fileHandle_t *file, fsMode_t mode );
  167.     int            (*FS_Read)( void *buffer, int len, fileHandle_t f );
  168.     int            (*FS_Write)( const void *buffer, int len, fileHandle_t f );
  169.     void        (*FS_FCloseFile)( fileHandle_t f );
  170.     int            (*FS_Seek)( fileHandle_t f, long offset, int origin );
  171.     //debug visualisation stuff
  172.     int            (*DebugLineCreate)(void);
  173.     void        (*DebugLineDelete)(int line);
  174.     void        (*DebugLineShow)(int line, vec3_t start, vec3_t end, int color);
  175.     //
  176.     int            (*DebugPolygonCreate)(int color, int numPoints, vec3_t *points);
  177.     void        (*DebugPolygonDelete)(int id);
  178. } botlib_import_t;
  179.  
  180. typedef struct aas_export_s
  181. {
  182.     //-----------------------------------
  183.     // be_aas_entity.h
  184.     //-----------------------------------
  185.     void        (*AAS_EntityInfo)(int entnum, struct aas_entityinfo_s *info);
  186.     //-----------------------------------
  187.     // be_aas_main.h
  188.     //-----------------------------------
  189.     int            (*AAS_Initialized)(void);
  190.     void        (*AAS_PresenceTypeBoundingBox)(int presencetype, vec3_t mins, vec3_t maxs);
  191.     float        (*AAS_Time)(void);
  192.     //--------------------------------------------
  193.     // be_aas_sample.c
  194.     //--------------------------------------------
  195.     int            (*AAS_PointAreaNum)(vec3_t point);
  196.     int            (*AAS_TraceAreas)(vec3_t start, vec3_t end, int *areas, vec3_t *points, int maxareas);
  197.     //--------------------------------------------
  198.     // be_aas_bspq3.c
  199.     //--------------------------------------------
  200.     int            (*AAS_PointContents)(vec3_t point);
  201.     int            (*AAS_NextBSPEntity)(int ent);
  202.     int            (*AAS_ValueForBSPEpairKey)(int ent, char *key, char *value, int size);
  203.     int            (*AAS_VectorForBSPEpairKey)(int ent, char *key, vec3_t v);
  204.     int            (*AAS_FloatForBSPEpairKey)(int ent, char *key, float *value);
  205.     int            (*AAS_IntForBSPEpairKey)(int ent, char *key, int *value);
  206.     //--------------------------------------------
  207.     // be_aas_reach.c
  208.     //--------------------------------------------
  209.     int            (*AAS_AreaReachability)(int areanum);
  210.     //--------------------------------------------
  211.     // be_aas_route.c
  212.     //--------------------------------------------
  213.     int            (*AAS_AreaTravelTimeToGoalArea)(int areanum, vec3_t origin, int goalareanum, int travelflags);
  214.     //--------------------------------------------
  215.     // be_aas_move.c
  216.     //--------------------------------------------
  217.     int            (*AAS_Swimming)(vec3_t origin);
  218.     int            (*AAS_PredictClientMovement)(struct aas_clientmove_s *move,
  219.                                             int entnum, vec3_t origin,
  220.                                             int presencetype, int onground,
  221.                                             vec3_t velocity, vec3_t cmdmove,
  222.                                             int cmdframes,
  223.                                             int maxframes, float frametime,
  224.                                             int stopevent, int stopareanum, int visualize);
  225. } aas_export_t;
  226.  
  227. typedef struct ea_export_s
  228. {
  229.     //ClientCommand elementary actions
  230.     void    (*EA_Say)(int client, char *str);
  231.     void    (*EA_SayTeam)(int client, char *str);
  232.     void    (*EA_UseItem)(int client, char *it);
  233.     void    (*EA_DropItem)(int client, char *it);
  234.     void    (*EA_UseInv)(int client, char *inv);
  235.     void    (*EA_DropInv)(int client, char *inv);
  236.     void    (*EA_Gesture)(int client);
  237.     void    (*EA_Command)(int client, char *command );
  238.     //regular elementary actions
  239.     void    (*EA_SelectWeapon)(int client, int weapon);
  240.     void    (*EA_Talk)(int client);
  241.     void    (*EA_Attack)(int client);
  242.     void    (*EA_Use)(int client);
  243.     void    (*EA_Respawn)(int client);
  244.     void    (*EA_Jump)(int client);
  245.     void    (*EA_DelayedJump)(int client);
  246.     void    (*EA_Crouch)(int client);
  247.     void    (*EA_MoveUp)(int client);
  248.     void    (*EA_MoveDown)(int client);
  249.     void    (*EA_MoveForward)(int client);
  250.     void    (*EA_MoveBack)(int client);
  251.     void    (*EA_MoveLeft)(int client);
  252.     void    (*EA_MoveRight)(int client);
  253.     void    (*EA_Move)(int client, vec3_t dir, float speed);
  254.     void    (*EA_View)(int client, vec3_t viewangles);
  255.     //send regular input to the server
  256.     void    (*EA_EndRegular)(int client, float thinktime);
  257.     void    (*EA_GetInput)(int client, float thinktime, bot_input_t *input);
  258.     void    (*EA_ResetInput)(int client);
  259. } ea_export_t;
  260.  
  261. typedef struct ai_export_s
  262. {
  263.     //-----------------------------------
  264.     // be_ai_char.h
  265.     //-----------------------------------
  266.     int        (*BotLoadCharacter)(char *charfile, int skill);
  267.     void    (*BotFreeCharacter)(int character);
  268.     float    (*Characteristic_Float)(int character, int index);
  269.     float    (*Characteristic_BFloat)(int character, int index, float min, float max);
  270.     int        (*Characteristic_Integer)(int character, int index);
  271.     int        (*Characteristic_BInteger)(int character, int index, int min, int max);
  272.     void    (*Characteristic_String)(int character, int index, char *buf, int size);
  273.     //-----------------------------------
  274.     // be_ai_chat.h
  275.     //-----------------------------------
  276.     int        (*BotAllocChatState)(void);
  277.     void    (*BotFreeChatState)(int handle);
  278.     void    (*BotQueueConsoleMessage)(int chatstate, int type, char *message);
  279.     void    (*BotRemoveConsoleMessage)(int chatstate, int handle);
  280.     int        (*BotNextConsoleMessage)(int chatstate, struct bot_consolemessage_s *cm);
  281.     int        (*BotNumConsoleMessages)(int chatstate);
  282.     void    (*BotInitialChat)(int chatstate, char *type, int mcontext, char *var0, char *var1, char *var2, char *var3, char *var4, char *var5, char *var6, char *var7);
  283.     int        (*BotNumInitialChats)(int chatstate, char *type);
  284.     int        (*BotReplyChat)(int chatstate, char *message, int mcontext, int vcontext, char *var0, char *var1, char *var2, char *var3, char *var4, char *var5, char *var6, char *var7);
  285.     int        (*BotChatLength)(int chatstate);
  286.     void    (*BotEnterChat)(int chatstate, int client, int sendto);
  287.     void    (*BotGetChatMessage)(int chatstate, char *buf, int size);
  288.     int        (*StringContains)(char *str1, char *str2, int casesensitive);
  289.     int        (*BotFindMatch)(char *str, struct bot_match_s *match, unsigned long int context);
  290.     void    (*BotMatchVariable)(struct bot_match_s *match, int variable, char *buf, int size);
  291.     void    (*UnifyWhiteSpaces)(char *string);
  292.     void    (*BotReplaceSynonyms)(char *string, unsigned long int context);
  293.     int        (*BotLoadChatFile)(int chatstate, char *chatfile, char *chatname);
  294.     void    (*BotSetChatGender)(int chatstate, int gender);
  295.     void    (*BotSetChatName)(int chatstate, char *name);
  296.     //-----------------------------------
  297.     // be_ai_goal.h
  298.     //-----------------------------------
  299.     void    (*BotResetGoalState)(int goalstate);
  300.     void    (*BotResetAvoidGoals)(int goalstate);
  301.     void    (*BotRemoveFromAvoidGoals)(int goalstate, int number);
  302.     void    (*BotPushGoal)(int goalstate, struct bot_goal_s *goal);
  303.     void    (*BotPopGoal)(int goalstate);
  304.     void    (*BotEmptyGoalStack)(int goalstate);
  305.     void    (*BotDumpAvoidGoals)(int goalstate);
  306.     void    (*BotDumpGoalStack)(int goalstate);
  307.     void    (*BotGoalName)(int number, char *name, int size);
  308.     int        (*BotGetTopGoal)(int goalstate, struct bot_goal_s *goal);
  309.     int        (*BotGetSecondGoal)(int goalstate, struct bot_goal_s *goal);
  310.     int        (*BotChooseLTGItem)(int goalstate, vec3_t origin, int *inventory, int travelflags);
  311.     int        (*BotChooseNBGItem)(int goalstate, vec3_t origin, int *inventory, int travelflags,
  312.                                 struct bot_goal_s *ltg, float maxtime);
  313.     int        (*BotTouchingGoal)(vec3_t origin, struct bot_goal_s *goal);
  314.     int        (*BotItemGoalInVisButNotVisible)(int viewer, vec3_t eye, vec3_t viewangles, struct bot_goal_s *goal);
  315.     int        (*BotGetLevelItemGoal)(int index, char *classname, struct bot_goal_s *goal);
  316.     int        (*BotGetNextCampSpotGoal)(int num, struct bot_goal_s *goal);
  317.     int        (*BotGetMapLocationGoal)(char *name, struct bot_goal_s *goal);
  318.     float    (*BotAvoidGoalTime)(int goalstate, int number);
  319.     void    (*BotInitLevelItems)(void);
  320.     void    (*BotUpdateEntityItems)(void);
  321.     int        (*BotLoadItemWeights)(int goalstate, char *filename);
  322.     void    (*BotFreeItemWeights)(int goalstate);
  323.     void    (*BotInterbreedGoalFuzzyLogic)(int parent1, int parent2, int child);
  324.     void    (*BotSaveGoalFuzzyLogic)(int goalstate, char *filename);
  325.     void    (*BotMutateGoalFuzzyLogic)(int goalstate, float range);
  326.     int        (*BotAllocGoalState)(int client);
  327.     void    (*BotFreeGoalState)(int handle);
  328.     //-----------------------------------
  329.     // be_ai_move.h
  330.     //-----------------------------------
  331.     void    (*BotResetMoveState)(int movestate);
  332.     void    (*BotMoveToGoal)(struct bot_moveresult_s *result, int movestate, struct bot_goal_s *goal, int travelflags);
  333.     int        (*BotMoveInDirection)(int movestate, vec3_t dir, float speed, int type);
  334.     void    (*BotResetAvoidReach)(int movestate);
  335.     void    (*BotResetLastAvoidReach)(int movestate);
  336.     int        (*BotReachabilityArea)(vec3_t origin, int testground);
  337.     int        (*BotMovementViewTarget)(int movestate, struct bot_goal_s *goal, int travelflags, float lookahead, vec3_t target);
  338.     int        (*BotPredictVisiblePosition)(vec3_t origin, int areanum, struct bot_goal_s *goal, int travelflags, vec3_t target);
  339.     int        (*BotAllocMoveState)(void);
  340.     void    (*BotFreeMoveState)(int handle);
  341.     void    (*BotInitMoveState)(int handle, struct bot_initmove_s *initmove);
  342.     //-----------------------------------
  343.     // be_ai_weap.h
  344.     //-----------------------------------
  345.     int        (*BotChooseBestFightWeapon)(int weaponstate, int *inventory);
  346.     void    (*BotGetWeaponInfo)(int weaponstate, int weapon, struct weaponinfo_s *weaponinfo);
  347.     int        (*BotLoadWeaponWeights)(int weaponstate, char *filename);
  348.     int        (*BotAllocWeaponState)(void);
  349.     void    (*BotFreeWeaponState)(int weaponstate);
  350.     void    (*BotResetWeaponState)(int weaponstate);
  351.     //-----------------------------------
  352.     // be_ai_gen.h
  353.     //-----------------------------------
  354.     int        (*GeneticParentsAndChildSelection)(int numranks, float *ranks, int *parent1, int *parent2, int *child);
  355. } ai_export_t;
  356.  
  357. //bot AI library imported functions
  358. typedef struct botlib_export_s
  359. {
  360.     //Area Awareness System functions
  361.     aas_export_t aas;
  362.     //Elementary Action functions
  363.     ea_export_t ea;
  364.     //AI functions
  365.     ai_export_t ai;
  366.     //setup the bot library, returns BLERR_
  367.     int (*BotLibSetup)(void);
  368.     //shutdown the bot library, returns BLERR_
  369.     int (*BotLibShutdown)(void);
  370.     //sets a library variable returns BLERR_
  371.     int (*BotLibVarSet)(char *var_name, char *value);
  372.     //gets a library variable returns BLERR_
  373.     int (*BotLibVarGet)(char *var_name, char *value, int size);
  374.     //sets a C-like define returns BLERR_
  375.     int (*BotLibDefine)(char *string);
  376.     //start a frame in the bot library
  377.     int (*BotLibStartFrame)(float time);
  378.     //load a new map in the bot library
  379.     int (*BotLibLoadMap)(const char *mapname);
  380.     //entity updates
  381.     int (*BotLibUpdateEntity)(int ent, bot_entitystate_t *state);
  382.     //just for testing
  383.     int (*Test)(int parm0, char *parm1, vec3_t parm2, vec3_t parm3);
  384. } botlib_export_t;
  385.  
  386. //linking of bot library
  387. botlib_export_t *GetBotLibAPI( int apiVersion, botlib_import_t *import );
  388.  
  389. /* Library variables:
  390.  
  391. name:                        default:            module(s):            description:
  392.  
  393. "basedir"                    ""                    l_utils.c            base directory
  394. "gamedir"                    ""                    l_utils.c            game directory
  395. "cddir"                        ""                    l_utils.c            CD directory
  396.  
  397. "log"                        "0"                    l_log.c                enable/disable creating a log file
  398. "maxclients"                "4"                    be_interface.c        maximum number of clients
  399. "maxentities"                "1024"                be_interface.c        maximum number of entities
  400. "bot_developer"                "0"                    be_interface.c        bot developer mode
  401.  
  402. "sv_friction"                "6"                    be_aas_move.c        ground friction
  403. "sv_stopspeed"                "100"                be_aas_move.c        stop speed
  404. "sv_gravity"                "800"                be_aas_move.c        gravity value
  405. "sv_waterfriction"            "1"                    be_aas_move.c        water friction
  406. "sv_watergravity"            "400"                be_aas_move.c        gravity in water
  407. "sv_maxvelocity"            "320"                be_aas_move.c        maximum velocity
  408. "sv_maxwalkvelocity"        "320"                be_aas_move.c        maximum walk velocity
  409. "sv_maxcrouchvelocity"        "100"                be_aas_move.c        maximum crouch velocity
  410. "sv_maxswimvelocity"        "150"                be_aas_move.c        maximum swim velocity
  411. "sv_walkaccelerate"            "10"                be_aas_move.c        walk acceleration
  412. "sv_airaccelerate"            "1"                    be_aas_move.c        air acceleration
  413. "sv_swimaccelerate"            "4"                    be_aas_move.c        swim acceleration
  414. "sv_maxstep"                "18"                be_aas_move.c        maximum step height
  415. "sv_maxsteepness"            "0.7"                be_aas_move.c        maximum floor steepness
  416. "sv_maxbarrier"                "32"                be_aas_move.c        maximum barrier height
  417. "sv_maxwaterjump"            "19"                be_aas_move.c        maximum waterjump height
  418. "sv_jumpvel"                "270"                be_aas_move.c        jump z velocity
  419.  
  420. "max_aaslinks"                "4096"                be_aas_sample.c        maximum links in the AAS
  421. "max_routingcache"            "4096"                be_aas_route.c        maximum routing cache size in KB
  422. "forceclustering"            "0"                    be_aas_main.c        force recalculation of clusters
  423. "forcereachability"            "0"                    be_aas_main.c        force recalculation of reachabilities
  424. "forcewrite"                "0"                    be_aas_main.c        force writing of aas file
  425. "aasoptimize"                "0"                    be_aas_main.c        enable aas optimization
  426. "sv_mapChecksum"            "0"                    be_aas_main.c        BSP file checksum
  427. "bot_visualizejumppads"        "0"                    be_aas_reach.c        visualize jump pads
  428.  
  429. "bot_reloadcharacters"        "0"                    -                    reload bot character files
  430. "g_gametype"                "0"                    be_ai_goal.c        game type
  431. "weapindex_rocketlauncher"    "5"                    be_ai_move.c        rl weapon index for rocket jumping
  432. "weapindex_bfg10k"            "9"                    be_ai_move.c        bfg weapon index for bfg jumping
  433. "weapindex_grapple"            "10"                be_ai_move.c        grapple weapon index for grappling
  434. "entitytypemissile"            "3"                    be_ai_move.c        ET_MISSILE
  435. "offhandgrapple"            "0"                    be_ai_move.c        enable off hand grapple hook
  436. "cmd_grappleon"                "grappleon"            be_ai_move.c        command to activate off hand grapple
  437. "cmd_grappleoff"            "grappleoff"        be_ai_move.c        command to deactivate off hand grapple
  438. "itemconfig"                "items.c"            be_ai_goal.c        item configuration file
  439. "weaponconfig"                "weapons.c"            be_ai_weap.c        weapon configuration file
  440. "synfile"                    "syn.c"                be_ai_chat.c        file with synonyms
  441. "rndfile"                    "rnd.c"                be_ai_chat.c        file with random strings
  442. "matchfile"                    "match.c"            be_ai_chat.c        file with match strings
  443. "nochat"                    "0"                    be_ai_chat.c        disable chats
  444. "max_messages"                "1024"                be_ai_chat.c        console message heap size
  445. "max_weaponinfo"            "32"                be_ai_weap.c        maximum number of weapon info
  446. "max_projectileinfo"        "32"                be_ai_weap.c        maximum number of projectile info
  447. "max_iteminfo"                "256"                be_ai_goal.c        maximum number of item info
  448. "max_levelitems"            "256"                be_ai_goal.c        maximum number of level items
  449.  
  450. */
  451.  
  452.